﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Serviços.BDServices;
using TCC_Hotel.Serviços.OtherServices;
using TCC_Hotel.Entidades;

namespace TCC_Hotel.Apresentacao.Gerencia
{
    public partial class GerenciarPrecos : System.Web.UI.Page
    {
        GerenciaService servico = new GerenciaService();

        /// <summary>
        /// Carregamento da página
        /// </summary>      
        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();

            LoginService servico_Login = new LoginService();
            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Gerenciar_Outras)
            {
                //Redireciona para a pagina inicial
                Response.Redirect("~/");
            }
            if (!IsPostBack)
            {
                //recupera os preços das diarias
                List<Preco_Diaria> precosAtuais = servico.RecuperarPrecos();

                //Coloca os preços atuais nos textsbox
                txtUmHospede.Text = String.Format("{0:0.00}",precosAtuais.Where(i => i.NumeroHospedes == 1).FirstOrDefault().Preco);
                txtDoisHospedes.Text = String.Format("{0:0.00}", precosAtuais.Where(i => i.NumeroHospedes == 2).FirstOrDefault().Preco);
                txtTresHospedes.Text = String.Format("{0:0.00}", precosAtuais.Where(i => i.NumeroHospedes == 3).FirstOrDefault().Preco);
                txtQuatroHospedes.Text = String.Format("{0:0.00}", precosAtuais.Where(i => i.NumeroHospedes == 4).FirstOrDefault().Preco);
                txtCincoHospedes.Text = String.Format("{0:0.00}", precosAtuais.Where(i => i.NumeroHospedes == 5).FirstOrDefault().Preco);

            }
        }

        /// <summary>
        /// Evento de click do botão salvar
        /// </summary>    
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            
            ComumServices comum = new ComumServices();

            //preenche a lista obrigatoria para verificar se todos os campos obrigatorios fora preenchidos
            List<string> listaObrigatoria = new List<string>() 
            { 
                txtUmHospede.Text.Trim(),
                txtDoisHospedes.Text.Trim(),
                txtTresHospedes.Text.Trim(),
                txtQuatroHospedes.Text.Trim(),
                txtCincoHospedes.Text.Trim()            
            };


            //Verifica se algum campo obrigatório nao foi preenchido
            if (!comum.ValidaCamposObrigatorios(listaObrigatoria))
            {
                MensagemJS("ERRO: Campo(s) obrigatório(s) em branco");
                return;
            }
           

            List<Preco_Diaria> precos = new List<Preco_Diaria>()
            {
                new Preco_Diaria()
                {
                    NumeroHospedes = 1,
                    Preco = Convert.ToDouble(txtUmHospede.Text)                    
                },
                new Preco_Diaria()
                {
                    NumeroHospedes = 2,
                    Preco = Convert.ToDouble(txtDoisHospedes.Text)                    
                },

                new Preco_Diaria()
                {
                    NumeroHospedes = 3,
                    Preco = Convert.ToDouble(txtTresHospedes.Text)                    
                },

                new Preco_Diaria()
                {
                    NumeroHospedes = 4,
                    Preco = Convert.ToDouble(txtQuatroHospedes.Text)                    
                },

                new Preco_Diaria()
                {
                    NumeroHospedes = 5,
                    Preco = Convert.ToDouble(txtCincoHospedes.Text)                    
                }

            };

            //chama o serviço que insere o apatamento empresa no banco de dados
            if (servico.EditarPreços(precos))
            {
                MensagemJS("Preços editados com sucesso!");
            }
            else
            {
                MensagemJS("ERRO: Ocorreu um erro e os preços não foram editados!");
                return;
            }
        }
        /// <summary>
        /// Lança um popup em javaScript com alguma mensagem
        /// </summary>
        /// <param name="msg">Mensagem do popup</param>
        public void MensagemJS(string msg)
        {
            //Formata um alert para o usuário
            Page.ClientScript.RegisterStartupScript(

                     this.GetType(),

                     "Mensagem",

                     "$(window).load(function(){alert('" + msg + "')});",

                     true);

        }
    }
}